package com.fun.xml2Json.json2map;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import java.util.Map;
/**
 * @author liyiruo
 * @Description
 * @Date 2021/6/23 上午10:06
 */

public class JsonToMap {

    public static void main(String[] args){

        String str = "{\"0\":\"zhangsan\",\"1\":\"lisi\",\"2\":\"wangwu\",\"3\":\"maliu\"}";
         str = "{\"sex\": \"男\",\n" +
                 "        \"name\": \"我是徐茅山\",\n" +
                 "        \"age\": \"今年20岁\"\n" +
                 "      }";
        //第一种方式
        Map maps = (Map)JSON.parse(str);
        System.out.println("1这个是用JSON类来解析JSON字符串!!!");
        System.out.println(maps);
        for (Object map : maps.entrySet()){
            System.out.println(((Map.Entry)map).getKey()+"     " + ((Map.Entry)map).getValue());
        }
        //第二种方式
        Map mapTypes = JSON.parseObject(str);
        System.out.println("2这个是用JSON类的parseObject来解析JSON字符串!!!");
        System.out.println(maps);
        for (Object obj : mapTypes.keySet()){
            System.out.println("key为："+obj+"值为："+mapTypes.get(obj));
        }
        //第三种方式
        Map mapType = JSON.parseObject(str,Map.class);
        System.out.println("3这个是用JSON类,指定解析类型，来解析JSON字符串!!!");
        System.out.println(maps);
        for (Object obj : mapType.keySet()){
            System.out.println("key为："+obj+"值为："+mapType.get(obj));
        }
        //第四种方式
        /**
         * JSONObject是Map接口的一个实现类
         */
        Map json = (Map) JSONObject.parse(str);
        System.out.println("4这个是用JSONObject类的parse方法来解析JSON字符串!!!");
        System.out.println(maps);
        for (Object map : json.entrySet()){
            System.out.println(((Map.Entry)map).getKey()+"  "+((Map.Entry)map).getValue());
        }
        //第五种方式
        /**
         * JSONObject是Map接口的一个实现类
         */
        JSONObject jsonObject = JSONObject.parseObject(str);
        System.out.println("5这个是用JSONObject的parseObject方法来解析JSON字符串!!!");
        System.out.println(maps);
        for (Object map : jsonObject.entrySet()){
            System.out.println(((Map.Entry)map).getKey()+"  "+((Map.Entry)map).getValue());
        }
        //第六种方式
        /**
         * JSONObject是Map接口的一个实现类
         */
        Map mapObj = JSONObject.parseObject(str,Map.class);
        System.out.println("6这个是用JSONObject的parseObject方法并执行返回类型来解析JSON字符串!!!");
        System.out.println(maps);
        for (Object map: json.entrySet()){
            System.out.println(((Map.Entry)map).getKey()+"  "+((Map.Entry)map).getValue());
        }
        System.out.println(json);
    }
}
